fix(desktop): bind Side Conversation events to Host admission - #3716
fix(desktop): bind Side Conversation events to Host admission#3716Astro-Han wants to merge 19 commits into
Conversation
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
Generated-by: Codex
f32cbb5 to
b3194c4
Compare
Generated-by: Codex
41aa14c to
f51928a
Compare
Derive admission observation from the Host-owned Session mode and keep ordinary Session streams unchanged. Remove the duplicate renderer send intent and tighten continuity decoding. Generated-by: Codex
Keep Session event listeners bound to the current validated Host target epoch instead of filtering replacement events through the original host identity. Generated-by: Codex
Reconcile buffered Host admission events when Stop outcome is unknown and bind successor/retraction fixtures to the actual submitted ticket. Generated-by: Codex
Follow replacement target epochs within the owning profile while rejecting same-named Session channels from other Hosts. Generated-by: Codex
Assert that replaying admission and text after an unknown Stop restores the real Host Turn streaming projection. Generated-by: Codex
Astro-Han
left a comment
There was a problem hiding this comment.
I reviewed this head and found blocking issues.
[P2] Queued steer Stop retracts the queued turn but drops UI ownership of the still-running turn
use-quote-companion.ts:312-320,723-758 with runtime-host-session-execution-ipc-main.ts:816-840. When a Side Conversation owns active A and steered S is still queued, Stop retracts only S without interrupting A. The renderer restores A but abandonAdmission() clears turnInFlight, so later A deltas render while the Composer appears non-streaming.
[P2] Ordinary Desktop observation now requires a catalog preflight that may not recover
runtime-host-session-execution-ipc-main.ts:192-206 with preload.ts:1722-1775. If Host reconnect interrupts getSession before registry registration, no observation is registered and live events are lost until remount. Previously sessions:observe registered directly.
Additional standards note: UI changes should include before/after visual evidence per CONTRIBUTING.md:85.
Checks on 364dd1a96 are test: success but mergeable: dirty — needs rebase.
Summary
No durable message schema, settlement/recovery policy, CLI projection, or Desktop primary-conversation projection is changed.
Behavior evidence
The production-shaped React hook + Workbar seam covers:
Verification
npm run buildgit diff --checkpassedExact-head CI: passed for
364dd1a96adaac3ba1bbaecbdb4da453cbcf11f6(run 32772641137).AI use
Codex contributed the implementation, regression tests, verification, and adversarial/simplification review. No commit from Draft PR #3633 was cherry-picked or copied; its old branch/review was used only as failure evidence.